package someTestExcemple.huaweiOd.greedyMethod;

//华为OD机试 - 报数游戏 - 约瑟夫环（Java 2025 A卷 200分）
//https://blog.csdn.net/guorui_java/article/details/130938091

import java.util.*;

public class CountGame {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int M = sc.nextInt();
        sc.close();
        if(M<1 || M>100) {
            System.out.println("ERROR!");
            return;
        }

        //2.按约瑟夫环的思路进行求解 todo --学习
/*        核心算法：
        设定一个指针（索引）初始为0。
        当列表中人数大于等于M 时，按照公式=
                index = (index + M - 1) % 当前人数
        找到需要出列的那个人，然后将其删除。
        //用链表结构方便移除元素*/
        List<Integer> list = new ArrayList<>();
        for(int i=1;i<=100;i++) {
            list.add(i);
        }
        //最开始要移除的人的位置
        int index = M-1;
        while(list.size()>=M) {
            list.remove(index);
            //下一个要删除元素位置 --因为remove后，数组前移了啊，所以要-1,
            //又因为是循环数组，所以还要%size
            index = (index+M-1)%list.size();
        }
        StringBuilder sb = new StringBuilder();
        for(int i=0;i<list.size();i++) {
            sb.append(list.get(i)+",");
        }
        sb.deleteCharAt(sb.length()-1);
        System.out.println(sb);

    }
}
